package fag.core.game.test.playground.solid;

import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;

import fag.core.geometry.Circle2D;

/**
 * Classe des solides de formes circulaires.
 * @author lumz
 */
public class Circle extends AbstractSolid {

	private double radius = 0;
	
	/**
	 * Constructeur par défaut.
	 * @param radius Le rayon du solide circulaire.
	 */
	public Circle(double radius) {
		super(new Circle2D(0, 0, radius));

		this.radius = radius;
		
		initialize();
	}

	@Override
	protected void draw(Graphics2D graphics2d) {
		
		// Transformation du plan pour peindre l'objet à sa position
		AffineTransform old = graphics2d.getTransform();
		
		synchronized(transformation) {
			graphics2d.transform(transformation);
		}
		
		graphics2d.setColor(color);
		graphics2d.fillOval((int)-radius, (int)-radius, (int)radius * 2, (int)radius * 2);
		graphics2d.setColor(OUTLINE_COLOR);
		graphics2d.drawOval((int)-radius, (int)-radius, (int)radius * 2, (int)radius * 2);
		
		// Restauration du contexte graphique
		graphics2d.setTransform(old);
	}
	
	/**
	 * Initialise le solide.
	 */
	private void initialize() {
		setMomentOfInertia(100);	// TODO : Calcul correct
	}
}
